home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ask / ksd / source / cp@key.c next >
Text File  |  1998-09-29  |  2KB  |  95 lines

  1. /* KSDサポート関数利用サンプルプログラム */
  2. // "@KEY"(@KSD)操作型
  3.  
  4. #include <stdio.h>
  5. #include "ksd.h"
  6. #include "amacro.h"
  7.  
  8. /* typedef    unsigned char unchar; */
  9. /* gcd cp@key.c ksd.a : うちの環境でのコンパイル方法 */
  10.  
  11. #define    LMAX    1024    /* >KSD_ST_SIZE */
  12.  
  13. main(int argc,unchar *argv[])
  14. {
  15. FILE *fp;
  16. int i,factive,fclear,flook;
  17. unchar *fname;
  18. unchar line[LMAX];
  19.     if (!KSDCheck()) {
  20.         prints("KSDが組み込まれていません\n");
  21.         exit(3);
  22.     }
  23.     /* オプションチェック初期化 */
  24.     clear_param();
  25.     if (helpcom(argc,argv,0,"Cp@Key","[/A /P /C /L] filename")) exit(255);
  26.     
  27.     // 強制的に活動状態にする
  28.     factive=0;
  29.     if (check_param2("A",argv,argc,0)) factive=1;
  30.     if (check_param2("P",argv,argc,0)) factive=2;
  31.     flook=check_param2("L",argv,argc,0);
  32.     // キーバッファーをクリアしてから書き込む
  33.     fclear=check_param2("C",argv,argc,0);
  34.     
  35.     /* オプションチェック */
  36.     i=check_param_error(argv,argc);
  37.     if (i) {
  38.         printsn("\aオプションエラーです:",argv[i]);
  39.         exit(4);
  40.     }
  41.     
  42.     i=getfname(argc,argv,1,NULL);
  43.     if (i==0) {
  44.         prints("ファイルを指定してください\n");
  45.         exit(1);
  46.     }
  47.     fname=argv[i];
  48.     /* 組み込みを確認してからKDS関数を呼び出すので、エラーチェックは省く */
  49.     if (fclear) KSDSetStatus(KSD_Clear_S); /* キーバッファーをクリアする */
  50.     KSDReadStatus(line);
  51.     if (flook) {
  52.         unchar devname[8+1];
  53.         printsn("KSD状態:",line);
  54.         KSDDevName(devname);
  55.         printsn("デバイス名:",devname);
  56.     }
  57.     if (line[0]==KSD_ST_Pause) {
  58.         // 休止状態にある
  59.         if (factive) {
  60.             if (factive==1) {
  61.                 /* 強制活動状態にする */
  62.                 KSDSetStatus(KSD_Active_S);
  63.             } // 休止のまま
  64.         } else {
  65.             prints("KSDは休止状態です。一時活動状態にしますか?(Y/N):");
  66.             i=getch();
  67.             if (i==0x1b) {
  68.                 printc('\n');
  69.                 exit(255);
  70.             }
  71.             if (i=='y'||i=='Y') {
  72.                 KSDSetStatus(KSD_OnceActive_S); /* 一時活動状態にする */
  73.                 prints("Y\n");
  74.             } else    prints("N\n");
  75.         }
  76.     }
  77.     // file open (text mode)
  78.     fp=fopen(fname,"rt");
  79.     if (fp==NULL) {
  80.         printsn("ファイルが見つかりません:",fname);
  81.         exit(2);
  82.     }
  83.     while (fgets(line,LMAX,fp)!=NULL) {
  84.         // \n=0x0aはファイルでは改行だが、キーではただの^Jなので
  85.         // キーの改行=0x0dに変換する
  86.         {int len;
  87.         len=strlen(line);
  88.         if (line[len-1]=='\n') line[len-1]=0x0d;
  89.         }
  90.         KSDSetData(line);
  91.     }
  92.     fclose(fp);
  93.     exit(0);
  94. }
  95.